The present invention relates to the field of memories generally and specifically to the field of automatic testing of memories.
When a computer system is first turned on or rendered active from an inactive state, several tests must be performed to determine whether the computer system is operating correctly. One of these tests is a memory diagnostic program which ensures that the memory modules are correctly storing and retrieving information. There are many different types of memory diagnostic programs. A typical program will write predetermined patterns into each location in memory and then read the contents from these locations, to make sure that the patterns were correctly stored and retrieved in each location.
Such tests, however, can take a great deal of time to perform for all but very small memories. Furthermore, as the size of memory increases, so does the time needed to run the diagnostic program. Recently, memory size has been increasing by a factor of 4 every three years due to improvements in technology. Since memory cycle speeds have not increased accordingly, the increased memory sizes have caused corresponding increases in diagnostic times.
Conventional memory systems perform testing by writing and reading to the memory locations one at a time. Even for high speed systems, this can consume a great deal of time. For example, assuming a memory cycle time of 400 nanoseconds for a memory of 64 megabytes (16 megawords), to write and read only one pattern as part of a diagnostic program would take about thirteen seconds (400 nanoseconds * 16 megawords * 2 operations (read and write) per word).
The problem, however, is much more serious. Typically, diagnostic programs require the use of more than one pattern to sufficiently test a memory. For example, if a memory cell is defective because it always produces a "1" output regardless of what data value was stored, then, on the average, half of the patterns used for testing would not catch this defect.
To provide for more complete testing, memory diagnostic programs involve several different patterns. For example, to run a simple test that uses a pattern formed by shifting a "1" in a field of zeros through each bit position in a 32 bit data word in the 64 megabyte memory system described above would take almost seven minutes (32 tests * 13 seconds/test) to complete.
Present systems must therefore choose between consuming several minutes for the memory test or foregoing a full test of the memory. Neither alternative is acceptable.
Accordingly, it is an object of the present invention to provide a memory that can perform self-testing procedures faster than conventional methods.
It is also an object of the present invention to perform automatic testing of memory quickly, but without requiring substantial numbers of additional components.
Additional objects and advantages of the present invention will be set forth in part in the description that follows and in part will be obvious from that description or may be learned from the practice of the invention.